#include "zombie.h"
#include <QPixmap>
#include <QLineF>
#include <QtMath>

Zombie::Zombie(QGraphicsItem *parent) : QGraphicsPixmapItem(parent)
{
    // 设置僵尸的图片，并进行缩放
    setPixmap(QPixmap(":/assets/zombie.png").scaled(50, 50, Qt::KeepAspectRatio));
    // 设置旋转中心为图片中心，确保旋转效果正确
    setTransformOriginPoint(boundingRect().width() / 2, boundingRect().height() / 2);

    // 初始化僵尸属性
    m_health = 100;
    m_damage = 10;
    m_speed = 1.0; // 移动速度较慢
}

void Zombie::moveTowards(const QPointF &targetPos)
{
    // 计算从当前位置到目标位置的向量
    QLineF line(pos(), targetPos);

    // 如果已经非常接近目标，则停止移动以防止抖动
    if (line.length() < 5) {
        return;
    }

    // 设置僵尸的旋转角度，使其朝向目标。+90度是用于校准图片本身的朝向
    setRotation(-line.angle() + 90);

    // 将向量的长度设置为每帧的移动距离（即速度）
    line.setLength(m_speed);

    // 更新僵尸的位置
    setPos(pos() + QPointF(line.dx(), line.dy()));
}

void Zombie::takeDamage(int damage)
{
    m_health -= damage;
}

int Zombie::health() const
{
    return m_health;
}

int Zombie::damage() const
{
    return m_damage;
}
